diff options
Diffstat (limited to 'src/pages/create/[board].astro')
-rw-r--r-- | src/pages/create/[board].astro | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/src/pages/create/[board].astro b/src/pages/create/[board].astro new file mode 100644 index 0000000..45f8b0d --- /dev/null +++ b/src/pages/create/[board].astro @@ -0,0 +1,54 @@ +--- +import Default from '../../layouts/Default.astro' +const { board } = Astro.params; +--- + +<h1>{board}</h1> + +<Default> + <form id="form" method="post" action="/create/thread" onsubmit="document.getElementById('submit-button').disabled = true"> + <textarea name="ThreadName" placeholder="Thread Name" style="height: 1.5rem; width: 350px;"></textarea> <br> + <textarea name="ThreadText" placeholder="Thread Contents" style="height: 150px; width: 350px;"></textarea> + <br> <input id="submit-button" type="submit" value="Create Thread" /> + <input id="image" type="file" accept=".png,.jpg,.gif,.bmp,.mp4" /> + + </form> + <script define:vars={{ board }}> + document.forms['form'].addEventListener('submit', async (event) => { + event.preventDefault(); + + let form = new FormData(event.target); + let reader = new FileReader(); + + reader.onload = e => { + form.append('image', + (e != null) ? e.target.result.toString() : '' + ); + } + + reader.onloadend = () => { + fetch(event.target.action, { + method: event.target.method, + body: new URLSearchParams(form) + }).then((r) => { + if(r.status == 200) { + alert('Thread Successfuly Posted'); + window.location.assign(`/board/${board}`); + } + else alert('An Error has Accured'); + }); + } + + form.append('board', board); + + let image = document.getElementById("image").files[0]; + if(image) { + reader.readAsDataURL(image); + } else { + reader.onload(null); + reader.onloadend(); + } + + }); + </script> +</Default> |